// //\f => 换⻚符
// var a1 = "string\f123564"
// console.log(a1)
// document.writeln(a1)
// //\r => 回⻋符
// var a2 = "string\n123456"
// console.log(a2)
// //\r => 回⻋符
// var a3 = "string\r123456"
// console.log(a3)
// //\' => 代表⼀个单引号字符(撇号)
// var a4 = "string\'123456"
// console.log(a4);

// ⻓度:length
// var a5 = "string"
// console.log(a5.length);
// // charAt(index) => 通过索引查找匹配字符串
// var a6 = "string"
// console.log(a6.charAt(5))//g
// console.log(a6.charAt(2) + a6.charAt(4))

// toLocaleUpperCase() => 将字符串转换成⼤写
// var a7 = 'string'
// let a8 = 'STRING'
// console.log(a7.toLocaleUpperCase());//STRING
// // 将字符串转换成小写
// console.log(a8.toLocaleLowerCase());

//实现a7⾸字⺟⼤写
// var temp = ''
// for(var i=1;i<a7.length;i++){
// //  temp += a7.charAt(i);
// // a7.slice(1)
// }
// console.log(a7.slice(1))
// console.log(a7.charAt(0).toLocaleUpperCase() + a7.slice(1))
// console.log(temp)
// //分项写法 过程
// var a = a7.charAt(0)
// var b = a.toLocaleUpperCase()
// console.log(b+temp);

// let str = "hello world"
// let arr = ['hello', 'world', 'and', 'you', 'and', 'me']

// 获取当前字符首次出现的索引，从第几个字符开始
// console.log(str.indexOf('l', 2)

// 根据开始结束索引截取字符串（包含开始，不包含结束）
// console.log(str.substring(7, 2)) // 开始和结束索引可以反过来，得到的结果是一样的
// console.log(str.slice(7, 2))
// console.log(str.substring(-3)) // 参数为负数的时候默认从0开始
// console.log(str.slice(-3)); // 参数为负数的时候默认从最后一个字符往前截

// var str2 = 'string number';
// 从第几个开始截，截多少个
// console.log(str.substr(0,3));
// console.log(str.substr(10,3));
// let str1 = '';
// arr.forEach(item=>{
//   let a = item.charAt(0).toLocaleUpperCase();
//   let temp = '';
//   for(let i=1;i<item.length;i++){
//     temp += item.charAt(i);
//   }
//   str1 += `${a}${temp} `
// })

// var str1 = 'hello world'
// // 用一个字符去截字符串，返回被截后的字符串数组（第二个参数是具体截多少个）
// console.log(str1.split('l'));//['hello', 'world']
// let arr = str1.split('l');
// let newStr = arr.join('m')
// console.log(newStr)

// var str9 = 'hello world';
// var str10 = str9.split(' ');
// console.log(str10);
// var str11 = str10.reverse()//将数组反转
// console.log(str11)

// function runs(num){
//  console.log('我是⽆参数，有返回值的函数1')
//  if(num>10) {
//   return;
//  } else {
//    return console.log('我是⽆参数，有返回值的函数')
//  }
//  console.log('我是⽆参数，有返回值的函数2')
// }
// console.log(runs(11))

// function moves(obj){
//  console.log('aaaa')
// //  return;
// //  return console.log('bbbb')
// }
// console.log(moves('李伟'));
// console.log([1,2,3].map((item,index)=>{
//   item = item+1
//   return item;
// }))

// (function fun1(str1, str2){
//   console.log(str1 + str2)
//   return str1 + str2;
// })('dfdsf', 'kkkk')
// console.log(fun1('dfdsf', 'kkkk'))

// 立即调用
// (function fun1(arr) {
//   for(let i = 0; i<arr.length; i++){
//     console.log('我很棒')
//   }
// })([1,2,3])

// fun1();

// var i = 0;
// // var time = null
// // // 延时执行，只执行一次（1s = 1000ms）
// setTimeout(function () {
//  console.log('每隔1000毫秒执⾏⼀次' + i)
//  i++
// }, 3000)

// // 每隔多长时间执行一次
// setInterval(function () {
//  console.log('每隔1000毫秒执⾏⼀次' + i)
//  i++
// }, 1000)

// setTimeout(()=>{
//   console.log('dfdfd')
// }, 2000)

// function ff() {
//   console.log('0000')
//   setTimeout(()=>{
//     console.log('111')
//   })
//   console.log('222')
// }

// ff()
// let a = 0;
// var a = 1
// for(let key in obj)
// console.log([2,3,4].sort((a,b)=>b-a))
// let temp = []
// for(let i=0; i<arr.length;i++){
//   if(temp.indexOf(arr[i])==-1) {
//     temp.push(arr[i])
//   }
// }

// let arr = [1,2,1,2]
// // 去重
// let arr1 = arr.filter((item,index)=>arr.indexOf(item)===index)
// console.log(arr1)

// function fun(obj) {
//   return Array;
// }

// function fun(obj) {
//   let arr = [];
//   let arr1 = [];
//   let arr2 = []
//   for(let key in obj) {
//     // arr1.push(`${key}a`);
//     // arr2.push(`${obj[key]}a`)
//     arr.push(`${key}a`, `${obj[key]}a`);
//   }
//   return arr;
//   // return [...arr1, ...arr2]
//   // return arr1.concat(arr2);
// }

// console.log(fun({
//   a: 1,b: '565',c:false
// }))

// let obj1 = {
//   a: '1',b: '2'
// }
// let obj2 = {
//   c: 3
// }
// console.log({...obj1, ...obj2})

// 求数组中所有最大值和最小值的平均值
// function fun1(arr) {
//   // var max = arr.reduce((max, item)=>Math.max(max, item), -Infinity)
//   // var min = arr.reduce((max, item)=>Math.min(max, item), Infinity)
//   // console.log((max+min)/2)
//   // let max =  -Infinity
//   // let min = Infinity;
//   // for(let i = 0; i<arr.length;i++) {
//   //   if(arr[i]>max) {
//   //     max = arr[i]
//   //   }
//   //   if(arr[i]<min) {
//   //     min = arr[i]
//   //   }
//   // }
//   // console.log(max, min)
//   arr.sort();
//   console.log(arr)
//   const newArr = arr.filter(item => item == arr[0] || item == arr[arr.length-1])
//   // console.log(newArr)
//   const newSum = newArr.reduce((sum, item)=>sum+item, 0)
//   // console.log(newSum)
//   return newSum/newArr.length
// }

// console.log(fun1([1,3,2,5,5]))

// 第四次考试试题简答题4
// function fun3(str) {
//   let arr = str.split(' ').reverse();  // ['world', 'hello']
//   let newArr = []
//   for(let i = 0; i<arr.length; i++) {
//     let str1 = arr[i].split('').reverse().join('') // dlrow olleh
//     str1 = str1.charAt(0).toUpperCase() + str1.slice(1) // Dlrow Olleh
//     newArr.push(str1) ['Dlrow', 'Olleh']
//   }
//   return newArr.join(' ') // Dlrow Olleh
// }

// console.log(fun3('hello world'))

// console.log(this); // window
// console.log(this.document == document)
// var btn1 = document.getElementsByClassName('btn1')[0]

// var time = null
// btn1.onclick = function(){
//  time = setTimeout(function(){
//  console.log(this);
//  },3000)
// }

// btn1.onclick = function () {
//  var _this = this;
//  function aa() {
//  console.log(_this)
//  console.log(this)
//  }
//  aa();
//  }

// var obj = {
//   name: "小明", //obj的属性
//   age: 18,
//   sex: "男",
//   fun: function () {
//     //obj的方法
//     console.log(this); // obj
//     return this.name + ":" + this.age + ":" + this.sex;
//   },
// };
// obj.fun();
// console.log(obj.fun()); //

// var parse = {
//     func:function(){
//         console.log(this)
//         return this.name + "今年" + this.age + "岁"
//     }
// }
// //小明
// var xm = {
//     name:'小明',
//     age:18
// }
// //小红
// var xh = {
//     name:'小红',
//     age:20
// }
// console.log(parse.func.call(xm))//小明今年18岁
// console.log(parse.func.call(xh));//小红今年20岁

// var parse1 = {//需要执行的对象 parse.func
//     func:function(aa,bb){
//         return this.name +'今年' + this.age + '岁' + aa + ':' +  bb;
//     }
// }
// var a = "hello "
// var b = 'world'
// console.log(parse1.func.call(xh,a,b))  // 传参为逗号间隔开来

// var arr = [1,2];
// console.log(parse1.func.apply(xm,arr)) // 传参为数组

// let b = 1;

// function fun() {
//   let a = 1;
//   a = ''
// }

// function fun1() {
//   let c = 0
// }
// console.log(a)

// const obj = {
//   a: 1
// }
// obj.a = 2
// console.log(obj)

// 全局作用域
// let a = 1
// let b = 2
// // 局部作用域
// function f() {
//   let c
//   let a = 10;
//   console.log(a) // 1 或 10
//   // console.log(d) // 报错
//   // 局部作用域
//   function g() {
//     let d = 'yo'
//     let b = 20;
//     console.log(b) // 2 或 20
//   }
//   // 调用 g 函数
//   g()
// }
// console.log(c) // 报错
// console.log(d) // 报错
// f();

// 作用域链：全局-》局部（层层嵌套， 优先顺序：从里到外）

// function outer() {
//   let count = 1;
//   function fn() {
//     count++;
//     console.log(`函数被调用${count}次`);
//   }
//   return fn;
// }
// const re = outer();
// re();
// re();
// re();
// re();

// function createCounter() {
// 	//私有变量
// 	let count = 3
// 	//封装自增
// 	function increment() {
// 		count++;
// 		console.log(count);
// 	}
// 	//封装自减
// 	function decrement() {
// 		count--;
// 		console.log(count)
// 	}
// 	//返回值
// 	return {
// 		increment,
// 		decrement
// 	}
// }
// //console.log(count);//抛出异常
// let counter = createCounter()
// counter.increment() //输出4
// counter.increment() //输出5
// counter.decrement() //输出4
// counter.decrement() //输出3

// 实现柯里化
// function add(x) {
// 	return function(y) {
// 		return x + y
// 	}
// }
// let adds = add(5)
// console.log(adds) //返回一个方法function(y){return x + y}
// console.log(adds(3)) //8
// console.log(adds(7)) //12

// function createLogger(prefix){
// 	return function(message){
// 		console.log(`[${prefix}]${message}`)
// 	}
// }
// let logInfo = createLogger('INFO')
// let logError = createLogger('ERROR')
// logInfo('User logged in');//[INFO]User logged in
// logError('Failed to load data')//[ERROR]Failed to load data

// function fetchDate(url){
// 	return function(callback){
// 		setTimeout(() => {
// 			let data =  'Response data from' + url
// 			callback(data)
// 		},1000)
// 	}
// }
// let fetchDataFromServer = fetchDate('https:www.baidu.com')
// console.log(fetchDataFromServer)
// fetchDataFromServer(function(data){
// 	console.log(data);//输出 Response data from:https:www.baidu.com
// })

// var:全局或者函数范围内
// 访问变量 str
//  console.log(str + 'world!');
//  // 声明变量 str
//  var str = 'hello ';

// var lis = document.getElementsByTagName('li');
// console.log(lis)
// lis[0].onclick = function(){
//  console.log('aaaa')
// }
// var 1a;
//console.log(1a);

// console.log() = 1
// new Array(-1)

// var obj = {}
// obj.bb()//Uncaught TypeError: obj.bb is not a function

// console.log(typeof null)
// console.log(typeof undefined)

// let obj = {
//   // 属性名有空格或中隔线的情况下必须用引号包裹起来，进行属性引用的时候必须用中括号的形式引用
//   'gg-gg': '张晓明',
//   'gg    ggg': 0,
//   'gg-rr': 44
// }

// let person = {//person:人
//     name: '小明',//描述人的姓名
//     age: 18,//描述人的年龄
//     stature: 185,//描述人的身高
//     gender: '男',//描述人的性别
//     obj1: {
//       hh: 1
//     },
//     singing: function () {
//         console.log('两只老虎,两只老虎,跑得快,跑得快..')
//     },
//     run: function () {
//         console.log('修长美腿，跑得快...')
//     }
// }

// console.log(Object.entries(person)) // 二维数组，每一项为键值对的数组
// console.log(Object.keys(person)) // 一维数组，所有的key
// console.log(Object.values(person)) // 一维数组，所有的value

// person.hobby = '玩游戏';
// person["weight"] = '180'
// person.singing();
// person.run();
// person.danceing = function () {
//     console.log(' 1 2 3 4 2 2 3 4...')
// }
// person['abc'] = function(){
//     console.log('我是传奇')
// }
// console.log(person)

// let obj = null
// if (obj == null) {
//     console.log('变量obj是null')
// } else {
//     console.log('变量obj不是null')
// }

// function findElement(arr,element){
//     for(var i=0;i<arr.length;i++){
//         if(arr[i] == element){
//             return i//条件成立返回的元素索引
//         }
//     }
//     return null//没有找到元素 返回null
// }
// const array = [1,2,3,4,5,6,7]
// const index = findElement(array,8)
// // console.log(index);
// if(index == null){
//     console.log('元素为找到')
// }else{
//     console.log(`元素在索引${index}处找到`)
// }

// var a = { a: 1, b: 2, c: 3, d: 4 }
// const arr = Object.entries(a);
// console.log(arr)
// for (const [key, value] of Object.entries(a)) {
// // for (item of Object.entries(a)) {
//     console.log(`${key} : ${value}`)
//     // console.log(`${item[0]} : ${item[1]}`)
// }

// 该对象有3个key， 有3个value，分别是a:1,b:2

// // 思路1--开始
// function fun1(obj) {
//   const arr = Object.entries(obj);// [[a,1], [b,2], [c,3]]
//   let arr1 = []
//   for (const item of arr) {
//     arr1.push(item.join(':'))
//   }
//   // arr1 = [a:1, b:2, c:3]
//   return `该对象有${Object.keys(obj).length}个key， 有${Object.values(obj).length}个value，分别是${arr1.join(', ')}`
// }

// arr.join(',') [1,2,3] //1,2,3
// str.split(',') //[1,2,3]

// console.log(fun1(a))
// // 思路1--结束
// // 思路2--开始
// function fun44(obj) {
//   let str = ''
//   const arr = Object.entries(obj);
//   console.log(arr)
//   for(let i = 0; i< arr.length; i++) {
//     str += `${arr[i][0]}: ${arr[i][1]}, `
//   }
//   console.log(str)
//   str = str.slice(0, str.length-2)
//   return `该对象有${Object.keys(obj).length}个key， 有${Object.values(obj).length}个value， 分别是${str}`
// }

// console.log(fun44(a))
// // 思路2--结束

// var date = new Date() //当前日期
// console.log(date)
// var year = date.getFullYear(); // 年
// console.log(year)
// var months = date.getMonth() + 1 // 月
// console.log(months)
// var _day = date.getDate(); // 日
// console.log(_day)
// var week = date.getDay(); // 星期
// console.log(week)
// var hours = date.getHours(); // 时
// console.log(hours);
// var mins = date.getMinutes() // 分
// console.log(mins)
// //getSeconds(): 获取当前秒
// var secs = date.getSeconds() // 秒
// console.log(secs)
// //getMilliseconds():获取当前毫秒数
// var mill = date.getMilliseconds() // 毫秒
// console.log(mill)

// const arr = ['日', '一', '二', '三', '四', '五', '六'];
// function fun(num) {
//   if(num<10) {
//     return `0${num}`
//   } else {
//     return num;
//   }
// }
// console.log(`现在是${year}年${fun(months)}月${fun(_day)}日${fun(hours)}点${fun(mins)}分${fun(secs)}秒${fun(mill)}毫秒，星期${arr[week]}`)
// // 现在是2025年7月31日10点57分35秒，星期四

// var NewDate = new Date('2025/07/01,08:00:00');
// console.log(NewDate);//Sun Oct 20 2024 08:00:00 GMT+0800 (中国标准时间)
// var week = NewDate.getDay(); // 星期
// console.log(week)
// var EndTime = NewDate.getTime()
// console.log(EndTime);

// var NowDate = new Date('2025/07/24,08:00:00');
// console.log(NowDate);//Fri Oct 18 2024 10:56:43 GMT+0800 (中国标准时间)
// var startTime = NowDate.getTime() // 时间戳（毫秒）
// console.log(startTime)
// //倒计时 = 目标时 - 现在时
// var timer = Math.abs(EndTime - startTime); // 两个时间相差的总毫秒值
// console.log(timer)
// //转化成剩余天数
// var days = parseInt(timer / (24 * 60 * 60 * 1000)) // 间隔天数
// console.log(days);
// var hour = parseInt(timer / (60 * 60 * 1000))  // 间隔小时数
// console.log(hour)
// var min  = parseInt(timer / (60 * 1000)) // 间隔分钟数
// console.log(min);

// var NewDate = new Date('2026/02/17,00:00:00');
// var EndTime = NewDate.getTime()
// setInterval(function () {
//     //当前时
//     var NowDate = new Date();
//     var startTime = NowDate.getTime()
//     const year = NewDate.getFullYear() - NowDate.getFullYear()
//     const startMonth = NowDate.getMonth()+1;
//     const endMonth = NewDate.getMonth()+1;
//     const startMonthDay = NowDate.getDate();
//     const endMonthDay = NewDate.getDate();
//     console.log(startMonth, endMonth, startMonthDay, endMonthDay)

//     //剩余天数

//     var d = parseInt((EndTime - startTime) / (24 * 60 * 60 * 1000))//天
//     var hour = parseInt((EndTime - startTime) / (60 * 60 * 1000))
//     var h = hour - d * 24//时
//     var m = 59 - NowDate.getMinutes()//分
//     var s = 59 - NowDate.getSeconds()//秒
//     console.log(`剩余${year}年${d}天,${h}时,${m}分,${s}秒`)
// },1000)
// number、string、boolean、undefined、null
// document.getElementById('ipt').value
// document.querySelector('img').title = '图片'
// document.querySelector('img').setAttribute('tile', '图片')

// 正则表达式
// 第一步：定义正则表达式
// var reg = /[a-z]/;  // 只能输入a-z之间所有字符，26个字母
// // 第二步：定义要测试的文本
// var str = 'A'
// var java = 'java后端开发'
// // 第三步：测试当前的文本是否符合定义的正则规范
// console.log(reg.test(str),reg.test(java));

//1、匹配开头的位置^
// const reg = /^web/
// console.log(reg.test('web前端开发')) //true
// console.log(reg.test('前端开发web')) //false
// console.log(reg.test('前端web开发')) //false
// console.log(reg.test('we')) //false
// //2、匹配结束的位置$
// const reg1 = /web$/
// console.log(reg1.test('web前端开发')) //false
// console.log(reg1.test('前端开发web')) //true
// console.log(reg.test('前端web开发')) //false
// console.log(reg.test('we')) //false
// console.log(reg.test('web')) //true
// console.log(reg.test('webweb'))//true
// //3、精确匹配^ $
// const reg2 = /^web$/
// console.log(reg2.test('web前端'))//false
// console.log(reg2.test('web前端web'))//false
// console.log(reg2.test('web'))//true
// console.log(reg2.test('webweb'))//false

//1、*重复次数 >= 0 次
// const reg1 = /^w*$/
// console.log(reg1.test('')) //true
// console.log(reg1.test('w')) //true
// console.log(reg1.test('wwww')) //true
// console.log(reg1.test('---------------')) //false
//2、+重复次数 >= 1 次
// const reg2 = /^w+$/
// console.log(reg2.test('')) //false
// console.log(reg2.test('w')) //true
// console.log(reg2.test('wwww')) //true
// console.log(reg2.test('---------------')) //false
// //3、?重复次数 0||1 次
// const reg3 = /^w?$/
// console.log(reg3.test('')) //true
// console.log(reg3.test('w')) //true
// console.log(reg3.test('wwww')) //false
// console.log(reg3.test('---------------')) //false
// //4、{n}重复次数 n 次
// const reg4 = /^w{5}$/
// console.log(reg4.test('')) //false
// console.log(reg4.test('w')) //false
// console.log(reg4.test('ww')) //false
// console.log(reg4.test('www')) //false
// console.log(reg4.test('wwww')) //false
// console.log(reg4.test('wwwww')) //true
// console.log(reg4.test('wwwwww')) //false
// console.log(reg4.test('---------------')) //false
// //5、{n,}重复次数 >=n 次
// const reg5 = /^w{5,}$/
// console.log(reg5.test('')) //false
// console.log(reg5.test('w')) //false
// console.log(reg5.test('ww')) //false
// console.log(reg5.test('www')) //false
// console.log(reg5.test('wwww')) //false
// console.log(reg5.test('wwwww')) //true
// console.log(reg5.test('wwwwww')) //true
// console.log(reg5.test('---------------')) //false
// //6、{n,m}重复次数 n <= 重复次数 <= m
// const reg6 = /^w{3,6}$/
// console.log(reg6.test('')) //false
// console.log(reg6.test('w')) //false
// console.log(reg6.test('ww')) //false
// console.log(reg6.test('www')) //true
// console.log(reg6.test('wwww')) //true
// console.log(reg6.test('wwwww')) //true
// console.log(reg6.test('wwwwww')) //true
// console.log(reg6.test('wwwwwww')) //false
// console.log(reg6.test('wwwwwww')) //false
// console.log(reg6.test('---------------')) //false

//1、[abc] 匹配包含的单个字符,多选1
//  const reg1 = /^[abc]$/
//  console.log(reg1.test('a'))//true
//  console.log(reg1.test('b'))//true
//  console.log(reg1.test('c'))//true
//  console.log(reg1.test('d'))//false
//  console.log(reg1.test('ab'))//false
//2、[a-z] 连字符 单个
//  const reg2 = /^[a-z]$/
//  console.log(reg2.test('a'))//true
//  console.log(reg2.test('b'))//true
//  console.log(reg2.test('c'))//true
//  console.log(reg2.test('d'))//true
//  console.log(reg1.test('ab'))//false
//  console.log(reg2.test('D'))//false
//  //想要包含大写字母、小写字母、数字 匹配单个
//  const reg3 = /^[a-zA-Z0-9]$/
//  console.log(reg3.test('B'))//true
//  console.log(reg3.test('c'))//true
//  console.log(reg3.test(9))//true
//  console.log(reg3.test(','))//falsed
//  console.log(reg3.test('Bd'))//false
//  console.log(reg3.test('cD'))//false
//  console.log(reg3.test(91))//false
//  //用户可以输入英文字母(大小写)、数字、可以加下划线,要求6-16位
//  const reg4 = /^[a-zA-Z0-9_]{6,16}$/
//  console.log(reg4.test('abcd1'))//false
//  console.log(reg4.test('abcd1510'))//true
//  console.log(reg4.test('abcd15_'))//true
//  console.log(reg4.test('ABcd15_.'))//false
//  //3、[^a-z]取反	匹配单个
//  const reg5 = /^[^a-z]$/
//  console.log(reg5.test('a'))//false
//  console.log(reg5.test('A'))//true
//  console.log(reg5.test(9))//true
//  console.log(reg5.test(95))//false
//  console.log(reg5.test('AB'))//false

//\d	匹配0-9之间任一数字 === [0-9]
// const reg1 = /^\d$/
// console.log(reg1.test(0)) //true
// console.log(reg1.test(23)) //false
// console.log(reg1.test('a')) //false
// //\匹配所有0-9以外的字符 === [^0-9]
// const reg2 = /^\D$/
// console.log(reg2.test('A')) //true
// console.log(reg2.test('AB')) //false
// console.log(reg2.test('a')) //true
// console.log(reg2.test('ab')) //false
// console.log(reg2.test(0)) //false
// //\w	匹配任意字母、数字、下划线 === [a-zA-Z0-9)_]
// const reg3 = /^\w$/
// console.log(reg3.test('A')) //true
// console.log(reg3.test('AB')) //false
// console.log(reg3.test('a')) //true
// console.log(reg3.test('ab')) //false
// console.log(reg3.test(0)) //true
// console.log(reg3.test(23)) //false
// console.log(reg3.test('*')) //false
// //\W	匹配除所有字母、数字、下划线以外的字符 === [^a-zA-Z0-9_]
// const reg4 = /^\W$/
// console.log(reg4.test('A')) //false
// console.log(reg4.test('AB')) //false
// console.log(reg4.test('a')) //false
// console.log(reg4.test('ab')) //false
// console.log(reg4.test(0)) //false
// console.log(reg4.test(23)) //false
// console.log(reg4.test('*')) //true
// //\s	匹配空格(包含换行符、制表符、空格符等) === [\t\r\n\v\f] 匹配单个
// const reg5 = /^\s$/
// console.log(reg5.test('A')) //false
// console.log(reg5.test('AB')) //false
// console.log(reg5.test('a')) //false
// console.log(reg5.test('ab')) //false
// console.log(reg5.test(0)) //false
// console.log(reg5.test(23)) //false
// console.log(reg5.test('*')) //false
// console.log(reg5.test('\t')) //true
// console.log(reg5.test('\r')) //true
// console.log(reg5.test('\n')) //true
// console.log(reg5.test('\v\t')) //false
// console.log(reg5.test('\f')) //true
// console.log(reg5.test(' ')) //true
// console.log(reg5.test('	')) //true
// //\S	匹配非空格(包含换行符、制表符、空格符等)的字符 ===[^\t\r\n\v\f]
// const reg6 = /^\S$/
// console.log(reg6.test('A')) //true
// console.log(reg6.test('AB')) //false
// console.log(reg6.test('a')) //true
// console.log(reg6.test('ab')) //false
// console.log(reg6.test(0)) //true
// console.log(reg6.test(23)) //false
// console.log(reg6.test('*')) //true

// console.log(reg6.test('\t')) //false
// console.log(reg6.test('\r')) //false
// console.log(reg6.test('\n')) //false
// console.log(reg6.test('\v\t')) //false
// console.log(reg6.test('\f')) //false
// console.log(reg6.test(' ')) //false
// console.log(reg6.test('	')) //false
// //日期格式
// const reg7 = /^\d{4}-\d{1,2}-\d{1,2}$/
// console.log(reg7.test('2024-11-01'))//true
// console.log(reg7.test(2024+'-'+ 11 + '-' + 11))//true

//替换符
// const str1 = '我们现在都在学习前端,相信大家都能学好前端,称为前端大神'
// const str2 = 'abcdefgABCDEFGabcdefgABCDEFG'
// //把前端替换成web replace 替换 返回的值是替换完毕的字符串
// const str3 = str1.replace(/前端/, 'web') // 找到第一个符合规则的内容并替换
// console.log(str3) //我们现在都在学习web,相信大家都能学好前端,称为前端大神
// // //修饰符
// const str4 = str1.replace(/前端/g, 'web') // 找到所有符合规则的内容
// console.log(str4) //我们现在都在学习web,相信大家都能学好web,称为web大神
// const str5 = str2.replace(/G/g, 'Z')  // 找到所有符合规则的内容
// console.log(str5)
// const str6 = str2.replace(/G/gi, 'Z') // 找到所有符合规则的内容，并且不区分大小写
// console.log(str6)
// const str = /^[GCDZTSPKXLY1-9]\d{1,4}$/
// console.log(str.test('G2586')) //true
// const IdNum = /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/
// console.log(IdNum.test('自己的身份证号')) //true
// console.log(IdNum.test('自己的身份证号')) //false

// function submit() {
//  let name =  document.getElementById('name').value;
//  let reg = /^[a-zA-Z0-9]\d{3,4}/
//  if(reg.test(name)) {
//   alert('提交成功')
//  } else {
//   alert('姓名必须是英文或数字')
//  }
// }
